import { ComponentInfoType, ComponentStateType } from './index'
export function getNextSelectedId(fe_id: string, componetnList: ComponentInfoType[]) {
  const visibleComponents = componetnList.filter(c => !c.isHidden) // filter out hidden components.
  const index = visibleComponents.findIndex(x => x.fe_id == fe_id)
  if (index < 0) return ''
  let newSeltctedId = ''
  const length = visibleComponents.length
  if (length <= 1) {
    newSeltctedId = '' //组件长度就只有一个
  } else {
    if (index + 1 == length) {
      //要删除最后一个组件，就选中删除的上一个
      newSeltctedId = visibleComponents[index - 1].fe_id //选中上一个组件的id
    } else {
      //要删除不是最后一个组件，就选中删除的下一个
      newSeltctedId = visibleComponents[index + 1].fe_id //选中下一个组件的id
    }
  }
  return newSeltctedId
}

// 插入新组件
export function insertComponent(draft: ComponentStateType, newComponent: ComponentInfoType) {
  const { selectedId, componetnList } = draft
  const index = componetnList.findIndex((item: any) => item.fe_id == selectedId) //找到要添加新组件的位置
  if (index === -1) {
    //没有找到选择的组件id值，则应添加组件到列表的最后
    draft.componetnList.push(newComponent)
  } else {
    draft.componetnList.splice(index + 1, 0, newComponent) //如果找到选择的组件id值，则将其插入到列表的位置下面，并将其保持为最新的列表。
  }
  draft.selectedId = newComponent.fe_id //将选择的组件id保存到变量中以便以后使用。
}
